import React, { useEffect, useRef } from 'react';
import * as echarts from 'echarts';

interface StackedAreaChartProps {
  style: React.CSSProperties;
  title: string;
  data: { name: string; value: number }[];
  xdata: string[]; // 修改此处，设置为字符串数组类型

}

const StackedAreaChart: React.FC<StackedAreaChartProps> = ({ style,title,data,xdata }: StackedAreaChartProps) => {
  const domRef = useRef<HTMLDivElement>(null);

  useEffect(() => {
    chartInit();
  }, []);

  const chartInit = () => {
    if (domRef.current) {
      const myChart = echarts.init(domRef.current);

      myChart.setOption({
        title: {
          text: title
        },
        tooltip: {
          trigger: 'axis',
          axisPointer: {
            type: 'cross',
            label: {
              backgroundColor: '#6a7985'
            }
          }
        },
        legend: {
          data: data
        },
        toolbox: {
          feature: {
            saveAsImage: {}
          }
        },
        grid: {
          left: '3%',
          right: '4%',
          bottom: '3%',
          containLabel: true
        },
        xAxis: [
          {
            type: 'category',
            boundaryGap: false,
            data: xdata
          }
        ],
        yAxis: [
          {
            type: 'value'
          }
        ],
        series: [
          {
            name: 'Email',
            type: 'line',
            stack: 'Total',
            areaStyle: {},
            emphasis: {
              focus: 'series'
            },
            data: [120, 132, 101, 134, 90, 230, 210]
          },
          {
            name: 'Union Ads',
            type: 'line',
            stack: 'Total',
            areaStyle: {},
            emphasis: {
              focus: 'series'
            },
            data: [220, 182, 191, 234, 290, 330, 310]
          },
          {
            name: 'Video Ads',
            type: 'line',
            stack: 'Total',
            areaStyle: {},
            emphasis: {
              focus: 'series'
            },
            data: [150, 232, 201, 154, 190, 330, 410]
          },
          {
            name: 'Direct',
            type: 'line',
            stack: 'Total',
            areaStyle: {},
            emphasis: {
              focus: 'series'
            },
            data: [320, 332, 301, 334, 390, 330, 320]
          },
          {
            name: 'Search Engine',
            type: 'line',
            stack: 'Total',
            label: {
              show: true,
              position: 'top'
            },
            areaStyle: {},
            emphasis: {
              focus: 'series'
            },
            data: [820, 932, 901, 934, 1290, 1330, 1320]
          }
        ]
      });
    }
  };

  return (
    <div>
      <div ref={domRef} style={style}></div>
    </div>
  );
};

export default StackedAreaChart;
